查看原文
其他

手把手教你如何获取股票数据和可视化

爬虫俱乐部 Stata and Python数据分析 2022-03-15

本文作者:方  言 ,中南财经政法大学金融学院

本文编辑:杨婉清

技术总编:王子一

Stata&Python云端课程来啦!

好雨知时节,当春乃发生。为了感谢大家长久以来的支持和信任,爬虫俱乐部为大家送福利啦!!!Stata&Python特惠课程双双上线腾讯课堂~原价2400元的Python编程培训课程,现在仅需100元,详情请查看推文《Python云端课程福利大放送!0基础也能学~》。关于Stata,爬虫俱乐部推出了系列课程,内容包括字符串函数、正则表达式、爬虫专题和文本分析,可以随心搭配,价格美丽,物超所值,更多信息可查看Stata系列推文《与春天有个约会,爬虫俱乐部重磅推出正则表达式网络课程!》《与春天有个约会,爬虫俱乐部重磅推出基本字符串函数网络课程》等。变的是价格,不变的是课程质量和答疑服务。对报名有任何疑问欢迎在公众号后台和腾讯课堂留言哦!

最近在之前的推文《利用tushare获取股票数据》中,我们介绍了tushare的安装、如何获取股票交易的数据,以及介绍tushare的用法并实现数据的可视化,那么今天我们就利用获取的交易数据做分析并进行展示~

1

获取股票交易数据

通过调用tushare获取股票时间序列数据

首先,初始化接口

import tushare as tsts.set_token('Your Token') pro = ts.pro_api()

接着,获取深交所代码000001和000002的股票日交易数据:

df_000001 = pro.daily(ts_code='000001.SZ')df_000002 = pro.daily(ts_code='000002.SZ')

查看数据情况:

df_000001

将股票数据分别存储至表格的不同sheet中:

import pandas as pdimport os
os.chdir(r'D:\tushare')datafile ='RawData.xlsx'with pd.ExcelWriter(datafile) as writer: df_000001.to_excel(writer, 'sheet1',index=None) df_000002.to_excel(writer, 'sheet2',index=None)

从excel表格文档中读入数据,为分析做准备:

import pandas as pddfbak = pd.read_excel(datafile, sheet_name=0, index_col=0) #0表示第一张表,1表示第二张表ready = dfbak.copy(deep=True) #deep copy的方式复制一个新的ready

copy的目的是为了在不改变原始数据的情况下进行数据处理和分析:

ready

从展示出的数据内容来看,DataFrame中的trade_date数据显示的是一串数字,python本身并不能够正确区分其到底是一串字符还是一个日期,因此这里需要先将日期进行处理,用到的是datetime开源包:

from datetime import datetimeready['trade_date'] = ready['trade_date'].apply(lambda x: datetime.strptime(str(x), "%Y%m%d"))ready

2

对股票交易数据做价量回归

这里用到的是scikit-learn中的LinearRegression模块,有关scikit-learn的具体内容,参考官方文档(http://scikit-learn.org/stable/) ,这里需要先安装scikit-learn和matplotlib

!pip show scikit-learn #机器学习的相关库!pip show matplotlib

调用库:

import matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegression

由于画图需要将数据转换成列,需要对数据进行转置:

#利用模型或者画图要把数据转换成列X = ready.iloc[:, 6].values.reshape(-1, 1) # 取第六列,转换成一列XY = ready.iloc[:, 10].values.reshape(-1, 1)Ylen(Y)

调用模型并出图:

LR_Model = LinearRegression()LR_Model.fit(X, Y) # fit模型Y_Predict = LR_Model.predict(X) # 预测模型plt.scatter(X, Y) # 真实数据的散点图plt.plot(X, Y_Predict, color='red') # 预测数据的回归图picpath_huigui = 'huigui.png'plt.savefig(picpath_huigui) #保存图片

股票收盘价折线图:

plt.plot(ready['trade_date'], ready['close'])picpath_zhexian ='zhexian.png'plt.savefig(picpath_zhexian) #保存图片

分析图片回插至excel表格文档:

!pip show xlsxwriter #专门写excel后缀名为xlsx的库
with pd.ExcelWriter('pic4share.xlsx', engine='xlsxwriter') as writer: dfbak.to_excel(writer, sheet_name='sheet1',index=None) workbook = writer.book #获取工作簿 worksheet = writer.sheets['sheet1'] #获取sheet1工作表 worksheet.insert_image('M2', picpath_zhexian) #将刚生成的两张图输出到excel指定的位置 worksheet.insert_image('M25', picpath_huigui)

为了更高效便捷的操作,我们可以借助函数,根据输入的股票代码自动生成包含数据和分析图表的excel表格文档,这样就可以避免一步一步的重复上述的程序,并且结合函数,能够通过灵活的调整参数来处理和生成文档:  

import pandas as pdimport tushare as ts # 引入专用库import matplotlib.pyplot as pltfrom sklearn.linear_model import LinearRegressionfrom datetime import datetime

def getsharedata(sharecodelst): """ 获取股票数据并自动生成图表写入excel表格文档 """ targetsharedatafile = 'pic4share.xlsx' writer = pd.ExcelWriter(targetsharedatafile, engine='xlsxwriter') LR_Model = LinearRegression() for sharecode in sharecodelst: print(sharecode) dfbak = pro.daily(ts_code=sharecode) dfcurrent = dfbak.copy(deep=True) dfcurrent['trade_date'] = dfcurrent['trade_date'].apply(lambda x: datetime.strptime(str(x), "%Y%m%d")) X = dfcurrent.iloc[:, 6].values.reshape(-1, 1) # 转置 Y = dfcurrent.iloc[:, 10].values.reshape(-1, 1) LR_Model.fit(X, Y) # fit模型 Y_Predict = LR_Model.predict(X) # 预测模型 plt.scatter(X, Y) # 真实数据的散点图 plt.plot(X, Y_Predict, color='red') # 预测数据的回归图 picpath_huigui = f'huigui_{sharecode}.png' plt.savefig(picpath_huigui) plt.close() plt.plot(dfcurrent['trade_date'], dfcurrent['close']) picpath_zhexian =f'zhexian_{sharecode}.png' plt.savefig(picpath_zhexian) plt.close()
dfbak.to_excel(writer,sheet_name=sharecode,index=None) worksheet = writer.sheets[sharecode] worksheet.insert_image('M5', picpath_zhexian) worksheet.insert_image('M25', picpath_huigui)
writer.close() print(targetsharedatafile) return targetsharedatafile

输入我们想要分析的股票代码就能够输出到xlsx文件中,这样就能够直接查看我们关心的股票的数据和趋势:

inputsharelst = ['000001.SZ', '000002.SZ', '000089.SZ']getsharedata(inputsharelst)

这里就能够直接实现数据和趋势的一致性输出:


以上就是今天所有的内容了,喜欢的小伙伴们赶紧点赞关注收藏吧~

最后,我们为大家揭秘雪球网(https://xueqiu.com/)最新所展示的沪深证券和港股关注人数增长Top10



对我们的推文累计打赏超过1000元,我们即可给您开具发票,发票类别为“咨询费”。用心做事,不负您的支持!

往期推文推荐

  Countvalues——数数的超级小帮手

         frame框架进阶篇

 下拉选择框如何变成“小猫咪” | selenium小技巧

  Python中的运算符知多少?

  快来get缺失值的正确打开方式

  frame框架——我到底在哪个“房间”

如何使用Pandas读取txt文件?

基于MySQL数据库实现增量式爬取

寻找春日气息|本月最受欢迎的景点都在这里!

问世间情为何物,大数据也想参悟——后考研时代,何以解忧?唯有数据!

Python与数据库交互—浅述pymysql

偷懒小妙招|selenium之玩转鼠标键盘操作--鼠标篇

大家用Stata来“找茬”

“粉墨登场”——多期双重差分法(DID)的Stata操作

Python与百度地图合璧,绘制棒呆的热力地图

【数据可视化】统计图绘制神器:Seaborn

检索Stata推文的“任意门”学会了这些,分分钟提升你的毕业体验

【爬虫实战】双一流大学的月关注度

【爬虫实战】“中国人不吃这一套”——人民日报微博评论分析

进化的标签管理助手——elabel命令

“学术明星”——双重差分法(DID)的Stata操作

偷懒小妙招| selenium之玩转鼠标键盘操作(上)

【爬虫实战】南京地铁又上热榜——客流量分析

renfiles:批量重命名文件的利器

Stata中字符串的处理

关于我们 


微信公众号“Stata and Python数据分析”分享实用的Stata、Python等软件的数据处理知识,欢迎转载、打赏。我们是由李春涛教授领导下的研究生及本科生组成的大数据处理和分析团队。



此外,欢迎大家踊跃投稿,介绍一些关于Stata和Python的数据处理和分析技巧。

投稿邮箱:statatraining@163.com投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿+推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到有关数据处理、分析等问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存